package com.efast.cafe.portal.service.common.impl;

import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.efast.cafe.framework.util.SpringWebUtils;
import com.efast.cafe.portal.bean.common.PortalTagCountBean;
import com.efast.cafe.portal.bean.common.PortalTagEntityCountBean;
import com.efast.cafe.portal.bean.common.PortalTagListCountBean;
import com.efast.cafe.portal.bean.common.PortalTagMapBean;
import com.efast.cafe.portal.bean.common.PortalTagPostParamBean;
import com.efast.cafe.portal.dao.common.PortalTagDao;
import com.efast.cafe.portal.entity.common.PortalTagMap;
import com.efast.cafe.portal.service.common.IPortalTagService;
import com.efast.cafe.util.ConfigUtil;
@Service
@Transactional
public class PortalTagServiceImpl implements IPortalTagService {

	private PortalTagDao portalTagDao;
	
	@Autowired
	public void setPortalTagDao(PortalTagDao portalTagDao) {
		this.portalTagDao = portalTagDao;
	}

	@Override
	public List<PortalTagCountBean> queryTagsCount(boolean flag,String referenceId) {
		return portalTagDao.queryTagsCount(SpringWebUtils.getRequestCompany(), SpringWebUtils.getRequestUser(),flag,referenceId);
	}

	@Override
	public List<PortalTagEntityCountBean> queryTagsMapCount(String tagName) {
		return portalTagDao.queryTagsMapCount(SpringWebUtils.getRequestCompany(), SpringWebUtils.getRequestUser(), tagName);
	}

	@Override
	public List<PortalTagMapBean> queryTagsMapDetail(List<String> tagName, String entityName) {
		String indentifier = ConfigUtil.getSystemIndentifier();
		String version = ConfigUtil.getSystemVersion();
		return portalTagDao.queryTagsMapDetail(SpringWebUtils.getRequestCompany(), SpringWebUtils.getRequestUser(), entityName, tagName,version,indentifier);
	}

	@Override
	public void saveTags(PortalTagPostParamBean bean) {
		String companyCode = SpringWebUtils.getRequestCompany();
		String username = SpringWebUtils.getRequestUser();
		if(bean.getEntityId()!=null){
			portalTagDao.deleteTags(bean.getEntityName(), bean.getEntityId(), companyCode, username);
		}
		bean.setCompanyCode(companyCode);
		bean.setUsername(username);
		portalTagDao.insertTags(bean);
	}

	@Override
	public List<PortalTagMap> queryTagByEntity(String entityName, Integer entityId) {
		String companyCode = SpringWebUtils.getRequestCompany();
		String username = SpringWebUtils.getRequestUser();
		return portalTagDao.queryTagByEntity(companyCode, username, entityName, entityId);
	}

	@Override
	public int insertTags(PortalTagMap portalTagMap) {
		portalTagDao.addTags(portalTagMap);
		return portalTagMap.getId();
	}

	@Override
	public void delTags(Integer tagId) {
		portalTagDao.delTags(tagId);;
	}

	@Override
	public PortalTagListCountBean queryTagsListCount(boolean flag) {
		// TODO Auto-generated method stub
		PortalTagListCountBean countBean = new PortalTagListCountBean();
		countBean.setList(portalTagDao.queryTagsCount(SpringWebUtils.getRequestCompany(), SpringWebUtils.getRequestUser(),true,""));
		countBean.setCount(portalTagDao.allMyTagsCount(SpringWebUtils.getRequestCompany(), SpringWebUtils.getRequestUser()));
		return countBean;
	}

	
}
